IPSec IKEv2 VPN zwischen LANCOM (LCOS) und Alpine Linux mit strongSwan. Versionen zum Schreibzeitpunkt: LCOS 10.90.0221RU3, Alpine Version 3.21.3, strongswan-5.9.14-r0
In diesem Beispiel hier geht es um ein sogenanntes “RoadWarrior Setup” oder auch einen “Einwahl-Zugang”/RAS. (Mit Linux-Host als Client.) Es soll nicht der ganze Internetverkehr umgeleitet, sondern nur der Zugriff auf ein internes Netz geschaffen werden.“encap = yes” Ohne verarbeitet Linux eingehende, in UDP gekapselte, ESP-Pakete nicht. ¯\_(ツ)_/¯# apk add strongswan # vim /etc/swanctl/conf.d/lancom-buero.conf connections { buero { version = 2 proposals = aes256-sha256-ecp512bp encap = yes dpd_delay = 60s remote_addrs = vpn.example.com vips = 0.0.0.0 children { buero { esp_proposals = aes256-sha256-ecp512bp start_action = start dpd_action = restart close_action = start updown = doas /usr/lib/strongswan/_updown iptables remote_ts = 198.51.100.0/24 #mobike = no # bei LCOS <10.90 Systemen auskommentieren } } local { auth = psk id = sw@example } remote { auth = psk id = sw@example } } } secrets { ike-sw { id = sw@example secret = "Passwort" } } #eof # chmod 600 /etc/swanctl/conf.d/lancom-buero.conf Komplett optional, für weniger Meldungen im Syslog. # vim /etc/strongswan.d/lancom-logging.conf charon { syslog { identifier = charon daemon { enc = -1 net = -1 } } } #eof Falls Firewall im Einsatz: # vim /etc/doas.d/charon.conf # IPSec deamon charon permit nopass keepenv ipsec as root cmd /usr/lib/strongswan/_updown args iptables #eof VPN-Verbindung starten: # rc-service charon start Automatisch beim booten starten: # rc-update add charon
# cp ORGANIZATION_CACert.pem /etc/swanctl/x509ca/ # cp ClientXYZ-FQDN_Cert.pem /etc/swanctl/x509/ # cp ClientXYZ-FQDN_Key.pem /etc/swanctl/private/ # chmod 400 /etc/swanctl/private/ClientXYZ-FQDN_Key.pem # vim /etc/swanctl/conf.d/lancom-buero.conf connections { buero { version = 2 proposals = aes256-sha256-ecp512bp encap = yes dpd_delay = 60s remote_addrs = vpn.example.com vips = 0.0.0.0 children { buero { esp_proposals = aes256-sha256-ecp512bp start_action = start dpd_action = restart close_action = start updown = doas /usr/lib/strongswan/_updown iptables remote_ts = 198.51.100.0/24 #mobike = no # bei LCOS <10.90 Systemen auskommentieren } } local { auth = pubkey certs = ClientXYZ-FQDN_Cert.pem } remote { cacerts = ORGANIZATION_CACert.pem } } } #eof
Der secrets-Abschnitt ist optional. Ohne wird beim Starten des Daemon nach dem Passwort der p12-Datei gefragt.# cp ORGANIZATION_CACert.pem /etc/swanctl/x509ca/ # cp ClientXYZ-FQDN_Cert_with_Key.p12 /etc/swanctl/pkcs12/ # openssl x509 -subject -noout -in ClientXYZ-FQDN_Cert_with_Key.p12 subject=C=DE, ST=Bavaria, O=example.com, OU=Example.com Certification Authority, CN=vpn.example.com, emailAddress=camaster@example.com # vim /etc/swanctl/conf.d/lancom-buero.conf ... local { auth = pubkey id = C=DE, ST=Bavaria, O=example.com, OU=Example.com Certification Authority, CN=vpn.example.com, emailAddress=camaster@example.com } remote { cacerts = ORGANIZATION_CACert.pem } } } secrets { pkcs12 { file = ClientXYZ-FQDN_Cert_with_Key.p12 secret = "Passwort" } } #eof # chmod 400 /etc/swanctl/conf.d/lancom-buero.conf